package com.ruoyi.recycle.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.recycle.domain.IntegralOrder;
import com.ruoyi.recycle.dto.IntegralOrderDTO;
import com.ruoyi.recycle.dto.Payment;
import com.ruoyi.recycle.dto.PocketCreateOrderReq;
import com.ruoyi.recycle.dto.PocketReq;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * 积分订单Service接口
 *
 * @author ruoyi
 * @date 2022-05-22
 */
public interface IIntegralOrderService extends IService<IntegralOrder> {
    /**
     * 查询积分订单
     *
     * @param id 积分订单主键
     * @return 积分订单
     */
    public IntegralOrder selectIntegralOrderById(Long id);

    /**
     * 查询积分订单列表
     *
     * @param integralOrder 积分订单
     * @return 积分订单集合
     */
    public List<IntegralOrder> selectIntegralOrderList(IntegralOrder integralOrder);

    /**
     * 新增积分订单
     *
     * @param integralOrder 积分订单
     * @return 结果
     */
    public int insertIntegralOrder(IntegralOrder integralOrder);

    /**
     * 修改积分订单
     *
     * @param integralOrder 积分订单
     * @return 结果
     */
    public int updateIntegralOrder(IntegralOrder integralOrder);

    /**
     * 批量删除积分订单
     *
     * @param ids 需要删除的积分订单主键集合
     * @return 结果
     */
    public int deleteIntegralOrderByIds(Long[] ids);

    /**
     * 删除积分订单信息
     *
     * @param id 积分订单主键
     * @return 结果
     */
    public int deleteIntegralOrderById(Long id);

    public AjaxResult statisticsMoney(IntegralOrderDTO queryDTO);

    AjaxResult deletePocketItem(PocketReq pocketReq);

    AjaxResult pocketCreateOrder(PocketCreateOrderReq pocketCreateOrderReq);

    AjaxResult payment(Payment payment);

    AjaxResult applicationForDrawback(Long id, String remark);

    AjaxResult applicationForDrawback(Long id);

    Map<String, String> payCallBack(HttpServletRequest request);

    AjaxResult miniClientGetClientIntegralOrder(IntegralOrderDTO queryDTO);

    AjaxResult cancelIntegralOrder(String orderNo);

    AjaxResult paymentEnd(Payment payment);

}
